home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)ba.d64 / c64symb < prev    next >
Text File  |  2007-02-28  |  23KB  |  860 lines

  1.  .OPT NOSYM
  2. ;
  3. ;
  4. ;       +------------------------------------------------+
  5. ;       !                                                !
  6. ;       !                                                !
  7. ;       !     ******  COMMODORE 64  COMAL-80  ******     !
  8. ;       !                                                !
  9. ;       !     (C) COPYRIGHT UNICOMAL APS. 1984, 1985     !
  10. ;       !                                                !
  11. ;       !                                                !
  12. ;       !  C64SYMB FOR COMMODORE 64  COMAL-80 REV. 2.01  !
  13. ;       !                                                !
  14. ;       !                                                !
  15. ;       +------------------------------------------------+
  16. ;
  17. ;
  18. ;
  19. TRUE =1
  20. FALSE =0
  21. ;
  22. PAGE0 =%11100000 ;NO EXPANSION
  23. PAGE1 =%10000000 ;CARTRIDGE OVERLAY 1 ($8000-$BFFF)
  24. PAGE2 =%10000001 ;CARTRIDGE OVERLAY 2 ($8000-$BFFF)
  25. PAGE3 =%10000010 ;CARTRIDGE OVERLAY 3 ($8000-$BFFF)
  26. PAGE4 =%10000011 ;CARTRIDGE OVERLAY 4 ($8000-$BFFF)
  27. PAGE5 =%10000100 ;CARTRIDGE OVERLAY 5 ($8000-$BFFF)
  28. PAGE6 =%10000101 ;CARTRIDGE OVERLAY 6 ($8000-$BFFF)
  29. ;
  30. PAGEA =PAGE2 ;COMAL PAGE A
  31. PAGEB =PAGE3 ;COMAL PAGE B
  32. PAGEC =PAGE1 ;COMAL PAGE C
  33. ;
  34. ;
  35. ;
  36. ;     PAGE ZERO VARIABLES:
  37. ;     ====================
  38. ;
  39.  *=$0000
  40. ;
  41. D6510 *=*+1 ;6510 ON-CHIP DATA-DIRECTION REGISTER
  42. R6510 *=*+1 ;6510 ON-CHIP 6-BIT I/O/MAP-REGISTER:
  43. LORAM =%00000001 ;  CONTROL FOR RAM/ROM AT $A000-$BFFF (BASIC)
  44. HIRAM =%00000010 ;  CONTROL FOR RAM/ROM AT $E000-$FFFF (KERNAL)
  45. CHAREN =%00000100 ;  CONTROL FOR I/O/ROM AT $D000-$DFFF
  46. NORM =%00110111 ;  COMAL MEMORY MAP
  47. ;
  48. PRPROC *=*+3 ;CHAIN OF LOCAL NAMES (PREPASS)
  49. INTEGR *=*+1 ;FP WORK
  50. ;
  51. ;  MEMORY MAP CONTROL
  52. ;
  53. PAGE *=*+1 ;CURRENT MEMORY MAP
  54. CM8096 =PAGE
  55. MEMMAP =PAGE
  56. PAGEPT *=*+2 ;POINTER USED BY LOAD/STORE/EXEC
  57. PAGEX *=*+1 ;OVERLAY FOR LOAD/STORE/EXEC ROUTINES
  58. PAGEY *=*+1 ;OVERLAY USED FOR CONTROL OF JUMP TABLE
  59. P6510 *=*+1 ;OLD C64-OVERLAY FOR CONTROL OF JUMP TABLE
  60. RESOL *=*+1 ;GRAPHICS RESOLUTION
  61. GCOLH *=*+1 ;GRAPHICS PENCOLOR*16
  62. ;
  63. ;  COMAL VARIABLES
  64. ;
  65. LOCLPT *=*+2 ;CHAIN OF OLD VARIABLE DESCRIPTIONS
  66. FORPT *=*+2 ;STACK ENTRY CHAIN
  67. SCTYPE *=*+1 ;TYPE OF SYMBOL FROM SCANNER
  68. TANSGN *=*+1 ;TAN SIGN / COMPARISON EVALUATION FLAG
  69. CODE *=*+1 ;USED TO HOLD A GENERATED CODE
  70. CPNT *=*+1 ;POINTER TO CODE BUFFER, CDBUF
  71. CLIMIT =255 ;LIMIT OF CPNT
  72. SPROG *=*+2 ;PNT TO START OF PROGRAM
  73. SVARS *=*+2 ;PNT TO START OF VARIABLE TABLE
  74. SSTACK *=*+2 ;PNT TO START OF STACK
  75. SMAX *=*+2 ;PNT TO TOP OF MEMORY
  76. EXINF *=*+1 ;INF FOR RESULT EXPRESSION FROM EXPR
  77. SCERR =$01
  78. SCLNO =$08 ;SET, IF NUMBER CAN BE A LINE NUMBER
  79. LNLEN *=*+1 ;LENGTH OF LINE TO BE EXECUTED
  80. NPNT *=*+1 ;POINTER TO NAME
  81. TPNT *=*+1 ;POINTER TO STRING
  82. TLIMIT =80
  83. ;
  84. INDEX1 *=*+2 ;UTILITY POINTER
  85. INDEX2 *=*+2 ;UTILITY POINTER
  86. INDEX =INDEX1
  87. ;
  88. RESM1 *=*+1 ;PRODUCT AREA FOR MULTIPLICATION
  89. RESM2 *=*+1
  90. RESM3 *=*+1
  91. RESM4 *=*+1
  92. RESM5 *=*+1
  93. ;
  94. MULT1 =RESM1 ;FIRST OPERAND (MULT)
  95. MULT2 =RESM3 ;SECOND OPERAND (MULT)
  96. ;
  97. DATAPT *=*+2 ;CURRENT DATA POINTER
  98. STOS *=*+2 ;PNT TO TOP OF STACK
  99. SFREE *=*+2 ;PNT TO FREE AREA OF VAR.RES
  100. PRGPNT *=*+2 ;PNT TO START OF LINE
  101. CODPNT *=*+1 ;PNT TO CODE DURING EXECUTION
  102. SCLSD1 *=*+2 ;OLD SFREE (CLOSED)
  103. SCLSD2 *=*+2 ;OLD STOS  (CLOSED)
  104. INF1 *=*+1
  105. INF2 *=*+1 ;USED FOR OPERAND CHECKING
  106. INF3 *=*+1
  107. Q1 *=*+2 ;SHORT SPAN WORK AREAS
  108. Q2 *=*+2
  109. Q3 *=*+2
  110. Q4 *=*+2
  111. Q5 *=*+2
  112. COPY1 *=*+2 ;WORK FOR COPY: FROM
  113. COPY2 *=*+2 ;               TO
  114. FDECPT =COPY2 ;CURRENT VARIABLE ADDRESS (DEC POINTER)
  115. COPY3 *=*+2 ;               LENGTH
  116. BUS *=*+1 ;BUS=0: BUS IDLE; BUS<>0: BUS ACTIVE
  117. STINF *=*+1 ;INFORMATION FOR STATEMENT:
  118. CMND =$01 ;  NO LINE NUMBER
  119. TWOST =$02 ;  ANOTHER STATEMENT FOLLOWS
  120. WHLDO =$04 ;  AFTER WHILE ... DO
  121. FORDO =$08 ;  AFTER FOR ... DO
  122. COMMNT =$10 ;  STATEMENT ENDED BY COMMENT
  123. IFTHEN =$20 ;  AFTER IF ... THEN
  124. REPUNT =$40 ;  AFTER REPEAT ... UNTIL
  125. ;
  126. EXCINF *=*+1 ;EXECUTION INFORMATION:
  127. ESCTRP =$02 ;  ESCAPE IS TRAPPED (STOP)
  128. SRQ =$04 ;  MAKE CALL OF COMAL INTERRUPT HANDLER.
  129. ESCMET =$08 ;  ESCAPE MET (STOP)
  130. SRQON =$10 ;  SRQ ENABLED
  131. USRQON =$20 ;  USER REQUEST ENABLED
  132. SFTSRQ =$80 ;  SOFTWARE SRQ ONLY
  133. ;
  134. ;  VARIABLES FOR FLOATING POINT PACKAGES
  135. ;
  136. TEMPF3 *=*+6 ;MISC. FP WORK AREA
  137. ESCAPE *=*+1 ;STOP KEY FLAG
  138.  *=*+1 ;NOT USED
  139. OLDOV *=*+1 ;OLD OVERFLOW (ROUNDING)
  140. TEMPF1 *=*+5 ;MISC. FP WORK AREA (5 BYTES)
  141. TEMPF2 *=*+5 ;MISC. FP WORK AREA (5 BYTES)
  142. DECCNT =TEMPF2+1
  143. TENEXP =TEMPF2+2
  144. ;
  145. AC1 *=*+6 ;ACCUM#1:
  146. AC1E =AC1+0 ;  EXPONENT
  147. AC1M1 =AC1+1 ;  MANTISSA 1
  148. AC1M2 =AC1+2 ;  MANTISSA 2
  149. AC1M3 =AC1+3 ;  MANTISSA 3
  150. AC1M4 =AC1+4 ;  MANTISSA 4
  151. AC1S =AC1+5 ;  SIGN
  152. ;
  153. DEGREE *=*+1 ;SERIES EVALUATION CONSTANT POINTER
  154. BITS *=*+1 ;ACCUM#1: HI-ORDER (OVERFLOW)
  155. ;
  156. AC2 *=*+6 ;ACCUM#2:
  157. AC2E =AC2+0 ;  EXPONENT
  158. AC2M1 =AC2+1 ;  MANTISSA 1
  159. AC2M2 =AC2+2 ;  MANTISSA 2
  160. AC2M3 =AC2+3 ;  MANTISSA 3
  161. AC2M4 =AC2+4 ;  MANTISSA 4
  162. AC2S =AC2+5 ;  SIGN
  163. ;
  164. ARISGN *=*+1 ;SIGN COMPARISON, ACC#1 VS ACC#2
  165. FACOV *=*+1 ;ACCUM#1: LO-ORDER (ROUNDING)
  166. POLYPT *=*+2 ;POINTER TO POLYNOM.
  167. FBUFPT =POLYPT
  168. ;
  169. ;  MORE COMAL VARIABLES
  170. ;
  171. ASAVE *=*+1 ;SAVE FOR .A (CALL/GOTO)
  172. XSAVE *=*+1 ;SAVE FOR .X (CALL/GOTO)
  173. PSAVE *=*+1 ;SAVE FOR .P (CALL/GOTO)
  174. INDPNT *=*+1 ;POINTER TO LAST CODE WHERE AN ADDRESS WAS LOADED
  175. SCFLAG *=*+1 ;FLAGS IN SCANNER:
  176. LNNO *=*+2 ;LINE NUMBER
  177. MOVEAD *=*+2 ;ADDRESS FOR MOVE
  178. TXTLO *=*+1 ;ADDRESS OF TEXT FOR PRTXT
  179. TXTHI *=*+1
  180. XX *=*+2 ;CURRENT X (GRAPHICS)
  181. YY *=*+2 ;CURRENT Y (GRAPHICS)
  182. GRWK1 *=*+2
  183. GRWK2 *=*+2
  184. GRWK3 *=*+2
  185. EXCFLG *=*+1 ;FLAGS:
  186. NWNAME =$01 ; NEW NAME HAS BEEN INSERTED
  187. NWLINE =$02 ; NEW LINE HAS BEEN INSERTED
  188. CHARPT *=*+1 ; PNT TO INBUF
  189. CHAR *=*+1 ; CHAR FROM INCHAR
  190. RNDX *=*+5 ; RANDOM NUMBER SEED
  191. ;
  192. ;  VARIABLES FOR I/O
  193. ;
  194. STATUS *=*+1 ;I/O OPERATION STATUS
  195. STKEY *=*+1 ;STOP KEY FLAG
  196. SVXT *=*+1 ;TEMPORARY
  197. VERCK *=*+1 ;LOAD OR VERIFY FLAG
  198. C3P0 *=*+1 ;IEEE BUFFERED CHAR FLAG
  199. BSOUR *=*+1 ;CHAR BUFFER FOR IEEE
  200. SYNO *=*+1 ;CASSETTE SYNC #
  201. XSAV *=*+1 ;TEMP FOR BASIN
  202. LDTND *=*+1 ;HOW MANY FILES OPEN
  203. DFLTN *=*+1 ;DEFAULT INPUT DEVICE #
  204. DFLTO *=*+1 ;DEFAULT OUTPUT DEVICE #
  205. PRTY *=*+1 ;CASSETTE PARITY
  206. T3 =PRTY
  207. DPSW *=*+1 ;CASSETTE DIPOLE SWITCH
  208. MSGFLG *=*+1 ;OS MESSAGE FLAG
  209. PTR1 *=*+1 ;CASSETTE ERROR PASS 1
  210. T1 =PTR1 ;TEMPORARY 1
  211. PTR2 *=*+1 ;CASSETTE ERROR PASS 2
  212. TMPC =PTR2
  213. T2 =PTR2 ;TEMPORARY 2
  214. TIME *=*+3 ;24 HOUR CLOCK IN 1/60 SEC.
  215. R2D2 =* ;SERIAL BUS USAGE
  216. PCNTR *=*+1 ;CASSETTE STUFF
  217. BSOUR1 =* ;TEMP USED BY SERIAL ROUTINE
  218. FIRT *=*+1
  219. COUNT =* ;TEMP USED BY SERIAL ROUTINE
  220. CNTDN *=*+1 ;CASSETTE SYNC COUNTDOWN
  221. BUFPT *=*+1 ;TAPE BUFFER POINTER
  222. SHCNL =* ;CASSETTE SHORT COUNT
  223. INBIT *=*+1 ;RS232 RCVR INPUT BIT STORAGE
  224. RER =* ;CASSETTE READ ERROR
  225. BITCI *=*+1 ;RS232 RCVR BIT COUNT IN
  226. REZ =* ;CASSETTE READING ZEROES
  227. RINONE *=*+1 ;RS232 RCVR FLAG FOR START BIT CHECK
  228. RDFLG =* ;CASSETTE READ MODE
  229. RIDATA *=*+1 ;RS232 RCVR BYTE BUFFER
  230. RIPRTY *=*+1 ;RS232 RCVR PARITY STORAGE
  231. SHCNH =RIPRTY ;CASSETTE SHORT COUNT
  232. SAL *=*+1 ;POINTER: TAPE BUFFER/SCREEN SCROLLING
  233. SAH *=*+1
  234. EAL *=*+1
  235. EAH *=*+1
  236. CMP0 *=*+1 ;TAPE TIMING CONSTANT
  237. TEMP *=*+1 ;TAPE TIMING CONSTANT
  238. TAPE1 *=*+2 ;START OF TAPE BUFFER
  239. ;
  240. SNSW1 =* ;CASSETTE STUFF
  241. BITTS *=*+1 ;RS232 TRNS BIT COUNT
  242. NXTBIT *=*+1 ;RS232 TRNS NEXT BIT TO BE SENT
  243. DIFF =NXTBIT ;EOT RECEIVED FROM TAPE
  244. PRP =*
  245. RODATA *=*+1 ;RS232 TRNS BYTE BUFFER
  246. FNLEN *=*+1 ;LENGTH OF CURRENT FILE NAME
  247. LA *=*+1 ;CURRENT FILE LOGICAL ADDRESS
  248. SA *=*+1 ;CURRENT FILE SECONDARY ADDRESS
  249. FA *=*+1 ;CURRENT FILE PRIMARY ADDRESS
  250. FILADR *=*+2 ;CURRENT FILE NAME ADDRESS
  251. OCHAR =*
  252. ROPRTY *=*+1 ;RS232 TRNS PARITY BUFFER
  253. FSBLK *=*+1 ;CASSETTE READ BLOCK COUNT
  254. MYCH *=*+1 ;SERIAL WORD BUFFER
  255. CAS1 *=*+1 ;CASSETTE MANUAL/CONTROLLED SWITCH
  256. STAL *=*+1 ;TAPE START ADDRESS
  257. STAH *=*+1
  258. TMP2 =*
  259. MEMUSS *=*+2 ;TAPE LOAD TEMPS
  260. ;
  261. ;  VARIABLES FOR SCREEN EDITOR
  262. ;
  263. LSTX *=*+1 ;KEY SCAN INDEX
  264. NEWKEY =LSTX
  265. NDX *=*+1 ;KEY BUFFER POINTER
  266. RVS *=*+1 ;REVERSE FIELD ON FLAG
  267. INDX *=*+1 ;BYTE POINTER TO END OF LINE FOR INPUT
  268. LSXP *=*+1 ;START OF SCREEN INPUT (ROW)
  269. LSTP *=*+1 ;START OF SCREEN INPUT (COLUMN)
  270. SFDX *=*+1 ;SHIFT MODE ON PRINT
  271. BLNSW *=*+1 ;CURSOR BLINK ENABLE
  272. BLNCT *=*+1 ;COUNTER TO FLIP CURSOR
  273. GDBLN *=*+1 ;OLD CHAR BEFORE BLINK
  274. BLNON *=*+1 ;ON/OFF BLINK FLAG
  275. CRSW *=*+1 ;INPUT/GET FLAG
  276. PNT *=*+2 ;POINTER TO START OF LINE WHERE
  277. CURLIN =PNT ;CURSOR IS FLASHING.
  278. PNTR *=*+1 ;COLUMN POSITION WHERE CURSOR
  279. COLPOS =PNTR ;IS FLASHING.
  280. QTSW *=*+1 ;FLAG FOR QUOTE MODE
  281. QUOTE =QTSW
  282. LNMX *=*+1 ;CURRENT SCREEN LINE LENGTH (39/79)
  283. TBLX *=*+1 ;LINE NUMBER WHERE CURSOR IS FLASHING
  284. ROWPOS =TBLX
  285. DATA *=*+1 ;TEMP DATA AREA
  286. INSRT *=*+1 ;NUMBER OF INSERT KEYS PUSHED TO GO
  287. WRPTB *=*+26 ;LINE FLAGS+ENDSPACE
  288. LDTB1 =WRPTB
  289. USER *=*+2 ;SCREEN EDITOR COLOR POINTER
  290. KEYTAB *=*+2 ;KEYBOARD DECODE TABLE
  291. ;
  292. RIBUF *=*+2 ;RS232 INPUT BUFFER ADDRESS
  293. ROBUF *=*+2 ;RS232 OUTPUT BUFFER ADDRESS
  294. FREKZP *=*+5 ;FREE KERNAL Z-PAGE SPACE
  295. ;
  296. ;  END OF PAGE ZERO
  297. ;
  298. STACK *=*+256 ;SYSTEM STACK
  299. FBUFFR =STACK ;FPASC WORK AREA (15 BYTES)
  300. BAD =STACK ;TAPE INPUT ERROR LOG
  301. ;
  302. ;
  303. ERTLEN *=*+1 ;LENGTH OF ERTEXT
  304. MAXERT =79 ;MAX. LENGTH OF ERTEXT
  305. ERTEXT *=*+MAXERT ;BUFFER TO HOLD ERROR MESSAGE
  306. ;
  307. ;
  308. ;  STORAGE FOR CON COMMAND:
  309. ;
  310. CONPNT *=*+2 ;OLD PRGPNT
  311. CONFLG *=*+1 ;OLD EXCINF
  312. CONCOD *=*+1 ;OLD CODPNT
  313. CONFOR *=*+2 ;OLD FORPT
  314. ;
  315. FPWORK *=*+1
  316. EXTROM *=*+1 ;EXTERNAL ROM FLAG (0=NO, 'I'=YES)
  317. IEEEIN *=*+1 ;IEEE INSTALLED    (0=NO, 'I'=YES)
  318. ;
  319. LAT *=*+10 ;TABLE OF LA'S
  320. FAT *=*+10 ;TABLE OF FA'S
  321. SAT *=*+10 ;TABLE OF SA'S
  322. KEYBUF *=*+10 ;KEYBOARD BUFFER QUEUE (FIFO)
  323. ;
  324. MEMSTR *=*+2 ;START OF MEMORY
  325. MEMSIZ *=*+2 ;TOP OF MEMORY
  326. TIMOUT *=*+1 ;IEEE TIME OUT DEFEAT
  327. ;
  328. ;  SCREEN EDITOR STORAGE
  329. ;
  330. COLOR *=*+1 ;ACTIVE COLOR NYBBLE
  331. GDCOL *=*+1 ;ORIGINAL COLOR UNDER CURSOR
  332. HIBASE *=*+1 ;BAS LOCATION OF SCREEN
  333. KBFLIM *=*+1 ;SIZE OF KEYBOARD BUFFER
  334. RPTFLG *=*+1 ;KEY REPEAT FLAG
  335. RPTCNT *=*+1 ;REPEAT SPEED COUNTER
  336. DELAY *=*+1 ;REPEAT DELAY COUNTER
  337. SHFLAG *=*+1 ;KEYBOARD SHIFT KEY/CTRL KEY/C= KEY
  338. LSTSHF *=*+1 ;LAST KEYBOARD SHIFT PATTERN
  339. KEYLOG *=*+2 ;VECTOR: KEYBOARD TABLE SETUP
  340. SHMODE *=*+1 ;0=PET MODE, 1=CATTACANNA
  341. AUTODN *=*+1 ;AUTO SCROLL DOWN, 0=ON
  342. ;
  343. ;  RS232 STORAGE
  344. ;
  345. M51CTR *=*+1 ;6551 CONTROL REGISTER IMAGE
  346. M51CDR *=*+1 ;6551 COMMAND REGISTER IMAGE
  347. M51AJB *=*+2 ;NON-STANDARD BPS (TIME/2-100) USA
  348. RSSTAT *=*+1 ;6551 STATUS REGISTER
  349. BITNUM *=*+1 ;NUMBER OF BITS LEFT TO SEND
  350. BAUDOF *=*+2 ;BAUD RATE: FULL BIT TIME (MICROSEC)
  351. RIDBE *=*+1 ;INDEX TO END OF INPUT BUFFER
  352. RIDBS *=*+1 ;START OF INPUT BUFFER (PAGE)
  353. RODBS *=*+1 ;START OF OUTPUT BUFFER (PAGE)
  354. RODBE *=*+1 ;INDEX TO END OF OUTPUT BUFFER
  355. ;
  356. IRQTMP *=*+2 ;HOLDS IRQ-VECTOR DURING TAPE I/O
  357. ;
  358. ;  TEMP SPACE FOR C64 VARIABLES
  359. ;
  360. ENABL *=*+1 ;RS232 ENABLES
  361. CASTON *=*+1 ;TOD SENSE DURING CASSETTE I/O
  362. KIKA26 *=*+1 ;TEMP STORAGE FOR CASSETTE READ
  363. STUPID *=*+1 ;TEMP D1IRQ INDICATOR FOR CASSETTE READ
  364. LINTMP *=*+1 ;TEMP FOR LINE INDEX
  365. PALNTS *=*+1 ;FLAG: 0=NTSC, 1=PAL
  366. ;
  367. FNMAX =55
  368. FILNAM *=*+FNMAX ;USED FOR STORAGE OF FILE NAME
  369. TBUFF =FILNAM ;USED FOR STORAGE OF DISC COMMAND
  370. RANGNO *=*+1 ;LINE # RANGE POINTER
  371. RANGPT *=*+1 ;LINE # RANGE POINTER
  372. RANGMX =32
  373. RANGES *=*+RANGMX ;LINE # RANGES
  374. IERROR *=*+2 ;VECTOR: PRINT BASIC ERROR MESSAGE
  375. NUMBER =TEMPF3 ;FP WORK AREA (SYNTAX ANALYSIS)
  376.  *=*+5 ;NOT USED
  377. NUM2 *=*+5 ;FP WORK AREA (PRINT USING)
  378. SAREG *=*+8 ;UNUSED
  379. ;
  380. ;  KERNAL VECTORS:
  381. ;
  382. CINV *=*+2 ;IRQ RAM VECTOR
  383. IRQVCT =CINV
  384. CBINV *=*+2 ;BRK INSTR RAM VECTOR
  385. BRKVCT =CBINV
  386. NMIVCT *=*+2 ;NMI RAM VECTOR
  387. IOPEN *=*+2 ;OPEN ROUTINE VECTOR
  388. ICLOSE *=*+2 ;CLOSE ROUTINE VECTOR
  389. ICHKIN *=*+2 ;CHKIN ROUTINE VECTOR
  390. ICKOUT *=*+2 ;CKOUT ROUTINE VECTOR
  391. ICLRCH *=*+2 ;CLRCHN ROUTINE VECTOR
  392. IBASIN *=*+2 ;CHRIN ROUTINE VECTOR
  393. IBSOUT *=*+2 ;CHROUT ROUTINE VECTOR
  394. ISTOP *=*+2 ;STOP ROUTINE VECTOR
  395. IGETIN *=*+2 ;GETIN ROUTINE VECTOR
  396. ICLALL *=*+2 ;CLALL ROUTINE VECTOR
  397. USRCMD *=*+2 ;FOR MACHINE LANGUAGE MONITOR
  398. ILOAD *=*+2 ;LOAD ROUTINE VECTOR
  399. ISAVE *=*+2 ;SAVE ROUTINE VECTOR
  400.  *=*+8 ;UNUSED
  401. TBUFFR *=*+192 ;TAPE I/O BUFFER
  402.  *=*+4 ;UNUSED
  403. SCSIZE =1000 ;SCREEN SIZE
  404. SCREEN *=*+SCSIZE ;SCREEN MEMORY AREA
  405.  *=*+16 ;SCREEN MEMORY EXCESS
  406. SPRPNT *=*+8 ;SPRITE DATA POINTERS
  407. ;
  408. ;
  409. ;  COMAL PROGRAM FOLLOWS HERE:
  410. ;
  411. MBEGIN *=*+4 ;START OF MEMORY
  412. MBEGN1 *=*+1 ;START OF NAME TABLE
  413. MBEGN2 *=*+1 ;START OF STACKS
  414. ;
  415. ;
  416. ;
  417. ;  START HERE TO PUT BUFFERS, VARIABLES, AND JUMP TABLE
  418. ;
  419.  *=$C000
  420. ;
  421. RSIBUF *=*+256 ;RS232 INPUT BUFFER
  422. RSOBUF *=*+256 ;RS232 OUTPUT BUFFER
  423. ;
  424. STDPCK *=*+1000 ;VARIABLES FOR STANDARD PACKAGES
  425. ;
  426. INLEN =121
  427. INBUF *=*+INLEN ;INPUT BUFFER
  428. CDBUF *=*+CLIMIT ;CODE BUFFER
  429. TXT *=*+TLIMIT ;STRING CONSTANT BUFFER
  430. TXT1 =TXT-1
  431. ;
  432. FLEVEL *=*+1 ;FOR/TRAP NESTING LEVEL DURING PREPASS
  433. Q6 *=*+2 ;TEMPORARY
  434. Q7 *=*+2 ;TEMPORARY
  435. Q8 *=*+2 ;TEMPORARY
  436. Q9 *=*+2 ;TEMPORARY
  437.  *=*+3 ;UNUSED
  438. MOVELN =MULT1
  439. MOVETY =MULT2
  440. ;
  441. SPSAV *=*+1 ;SAVE OF .S DURING EXECUTION
  442. SCINF *=*+2 ;NAME POINTER
  443. ;
  444. PSTART =*
  445. ;
  446. AUTO1 *=*+2 ;CURRENT LINE NUMBER FOR AUTO
  447. AUTOST *=*+2 ;STEP FOR AUTO
  448. ;
  449. DSTART *=*+2 ;START OF DATA QUEUE
  450. ;
  451. TABSET *=*+1 ;VALUE OF LAST ZONE STATEMENT
  452. ALTPOS *=*+1 ;POSITION IN SELECT OUTPUT FILE
  453. INTRNO *=*+2 ;PROCEDURE GIVEN BY INTERRUPT STMT.
  454. ;
  455. PEND =*
  456. ;
  457. ERRPNT *=*+1 ;CHAR POS OF ERROR
  458. NORINT *=*+2 ;NORMAL INTERRUPT VECTOR
  459. SAFE *=*+1 ;SAFE STATUS
  460. MAINRV *=*+1 ;MAIN REVISION
  461. SUBRV *=*+1 ;SUB REVISION
  462. TESTRV *=*+1 ;TEST VERSION
  463. MSGLIN *=*+2 ;ADDRESS OF MESSAGE LINE
  464. UPPER2 *=*+1 ;COPY OF BORGE
  465. EXTPRC *=*+1 ;FLAG FOR LOADING OF EXTERNAL PROC/FUNC
  466. EXTCNT *=*+2 ;NESTING LEVEL OF EXTERNAL PROC/FUNC
  467. SSIZE *=*+1 ;40 COL./80 COL.
  468. LUNIT *=*+1 ;LAST DISC (STATUS)
  469. BORGE *=*+1 ;SPECIAL FLAGS FOR LISTING
  470. OPENFL *=*+1 ;FLAG USED BY COPEN
  471. DFUNLN *=*+1 ;LENGTH OF DEFAULT UNIT TEXT
  472. DFUNIT *=*+2 ;DEFAULT UNIT (POWER UP VALUE: .BYTE '0')
  473. DEFOUT *=*+1 ;SELECT OUTPUT FLAG
  474. ;
  475. IOVECT =* ;VECTORS:
  476. TRAPVC *=*+2 ;  PAGEB; ERROR HANDLER
  477. EXTNVC *=*+2 ;  PAGEB; EXTERNAL LOAD
  478. USRQVC *=*+2 ;  PAGEB; INTERRUPT FACILITY
  479. IERTXT *=*+3 ;         ERROR MESSAGE DATA
  480. IGETLN *=*+2 ;  PAGEA; INPUT COMMAND LINE
  481. ISAVEC *=*+2 ;  PAGEC; SAVE ADDITIONAL INFO
  482. ILOADC *=*+2 ;  PAGEC; LOAD ADDITIONAL INFO
  483. IFNKEY *=*+2 ;  PAGEA; HANDLE FUNCTION KEYS
  484. ;
  485. LIBPT *=*+1 ;PTR TO PLACE FOR NEXT LIBRARY DESCRIPTION
  486. ;
  487. LIBLEN =10 ;NO. OF LIBRARY DESCRIPTIONS
  488. ;
  489. LIBLO *=*+LIBLEN
  490. LIBHI *=*+LIBLEN
  491. LIBPAG *=*+LIBLEN
  492. ;
  493. ;
  494. ; OPEN FILE MODES (COPEN & CFNAME):
  495. ;
  496. MREAD =1 ;READ
  497. MWRITE =2 ;WRITE
  498. MREL =4 ;RELATIVE (RANDOM)
  499. ;
  500. ; FILE ATTRIBUTES (COPEN):
  501. ;
  502. MDISK =8 ;DISK FILE
  503. MS =16 ;SECONDARY ADDRESS SELECTION
  504. ML =32 ;AUTO LINEFEED
  505. MT =64 ;TIME OUT
  506. MA =128 ;ASCII I/O
  507. ;
  508. ; FILE TYPES (CFNAME):
  509. ;
  510. TAPPND =8
  511. TPRG =16
  512. TSEQ =TPRG+TPRG
  513. TREL =TSEQ+TPRG
  514. TUSR =TREL+TPRG
  515. ;
  516. MODET *=*+10 ;OPEN MODE FOR FILES
  517. COUNTT *=*+10 ;TABLE OF BYTE COUNT FOR FILES
  518. STT *=*+10 ;STATUS FOR OPENED FILES
  519. RECOTL *=*+10 ;TABLE OF RECORD POS. FOR FILES
  520. RECOTH *=*+10
  521. ;
  522. PPAGE *=*+1 ;OVERLAY TO PEEK/POKE/SYS
  523. NOREST *=*+1 ;<>0: DISABLE STOP/RESTORE
  524. LOADIN *=*+1 ;<>0: LOADING COMAL PROGRAM
  525. UNITFL *=*+1 ;0: SIMP.DEV; 1: DRIVE; 2: CASSETTE
  526. MODE *=*+1 ;FILE MODE
  527. CSTAT *=*+1 ;STATUS OF COMAL PROGRAM
  528. ;
  529. ;    1: INPUT ANALYSIS FROM SCREEN
  530. ;    2:   -       -      -  FILE
  531. ;    3: PREPASSING
  532. ;    4: EXECUTING A COMMAND
  533. ;    5: EXECUTING PROGRAM
  534. ;
  535. LSTFLG *=*+1 ;BIT VECTOR FOR RCREAT:
  536. ;
  537. ININD =$01
  538. OUTIND =$02
  539. LSTCON =$04
  540. NOIND =$08
  541. LSTEXT =$10
  542. ;
  543. LPMODE *=*+1 ;DEFAULT PRINTER OPEN MODE
  544. LPSA *=*+1 ;DEFAULT PRINTER SECONDARY ADDRESS
  545. LPFA *=*+1 ;DEFAULT PRINTER UNIT
  546. ;
  547. RECDEL *=*+1 ;RECORD POSITIONING DELAY
  548. ENDADR *=*+2 ;TOP OF RAM
  549. HEADLN *=*+1 ;POWER ON MESSAGE FLAG
  550. ;
  551. KWTAB *=*+2 ;KEYWORD TABLE (PAGEA)
  552. ;
  553. DFBORD *=*+1 ;DEFAULT BORDER COLOR
  554. DFBACK *=*+1 ;DEFAULT BACKGROUND COLOR
  555. DFFORG *=*+1 ;DEFAULT FOREGROUND COLOR
  556. ACBORD *=*+1 ;ACTUAL TEXT BORDER
  557. ACBACK *=*+1 ;ACTUAL TEXT BACKGROUND
  558. ;
  559. KEYLEN *=*+16 ;LENGTHS OF FUNC.KEY DEF'S
  560. KLEN *=*+1 ;# OF CHARS LEFT OF DEF.
  561. KPNT *=*+2 ;PNT TO KEY DEF
  562. DEFINP *=*+1 ;SELECT INPUT FLAG
  563. HZ50 *=*+1 ;0=60 HZ, 1=50 HZ TOD
  564. ;
  565.  *=*+17 ;RESERVED FOR FUTURE USE
  566. MTO =*
  567. ;
  568. ;
  569. ;  SUBROUTINES TO USE IN ASSEMBLER
  570. ;  CODED SUBROUTINES IN COMAL:
  571. ;
  572. COLD *=*+3 ;COLD START OF COMAL
  573. WARM *=*+3 ;WARM START OF COMAL
  574. CALL *=*+3 ;JSR TO ANOTHER PAGE.
  575. GOTO *=*+3 ;JMP TO ANOTHER PAGE.
  576. LOAD *=*+3 ;LOAD FROM PAGEX
  577. STORE *=*+3 ;STORE TO PAGEX
  578. EXEC *=*+3 ;JSR TO PAGEX
  579. ;
  580. LDAC1 *=*+3 ;LOAD AC1
  581. LDAC2 *=*+3 ;LOAD AC2
  582. FNDPAR *=*+3 ;FIND PARAMETER (ASM.CALLS)
  583. COPY *=*+9 ;COPY AREA TOWARDS LOWER ADDRESSES
  584. COPYDN *=*+9 ;COPY AREA TOWARDS HIGHER ADDRESSES
  585. FPADD *=*+3 ;LOAD AC2 AND ADD AC2 TO AC1
  586. FPADD2 *=*+9 ;ADD AC2 TO AC1
  587. FPAHF *=*+9 ;ADD 0.5 TO AC1
  588. FPSUB *=*+3 ;LOAD AC2 AND SUB AC2 FROM AC1
  589. FPSUB2 *=*+9 ;SUB AC2 FROM AC1
  590. FPMUL *=*+3 ;LOAD AC2 AND MUL AC2 BY AC1
  591. FPMUL2 *=*+9 ;MUL AC2 BY AC1
  592. FPDIV *=*+3 ;LOAD AC2 AND DIV AC2 BY AC1
  593. FPDIV2 *=*+9 ;DIV AC2 BY AC1
  594. MUL10 *=*+9 ;MULTIPLY AC1 BY 10.0
  595. DIV10 *=*+9 ;DIVIDE AC1 BY 10.0
  596. STAC1 *=*+3 ;STORE AC1
  597. C1T2 *=*+9 ;COPY AC1 TO AC2
  598. C2T1 *=*+9 ;COPY AC2 TO AC1
  599. FPNEG *=*+9 ;NEGATE AC1
  600. FPSGN *=*+9 ;SIGN OF AC1
  601. FPSIN *=*+9 ;SINE OF AC1
  602. FPCOS *=*+9 ;COSINE OF AC1
  603. FPSQR *=*+9 ;SQUARE ROOT OF AC1
  604. FPTAN *=*+9 ;TANGENT OF AC1
  605. FPPOW *=*+9 ;RAISE AC2 TO THE POWER OF AC1
  606. FPATN *=*+9 ;ARCTANGENT OF AC1
  607. FPEXP *=*+9 ;RAISE AC1 TO THE POWER OF E
  608. FPLOG *=*+9 ;LOGARITHM BASE E OF AC1
  609. FPRND *=*+9 ;COMPUTE PSEUDO-RANDOM NUMBER (RANGE 0 TO 1)
  610. FPCOM *=*+9 ;COMPARE NUMBER TO AC1
  611. TRUNC *=*+9 ;CONVERT AC1 INTO INTEGER (-32768 .. 32767)
  612. FPINT =TRUNC
  613. FPINTG *=*+9 ;CONVERT AC1 INTO INTEGER (-2^24 .. 2^24-1)
  614. FPINTA *=*+9 ;CONVERT AC1 INTO INTEGER (0 .. 65535)
  615. INTFP *=*+9 ;CONVERT INTEGER INTO FP IN AC1
  616. FPASC *=*+9 ;CONVERT AC1 INTO ASCII EQUIVALENT (STR$)
  617. ;
  618. VAL *=*+6 ;CONVERT DECIMAL STRING INTO BINARY IN AC1
  619. POPA1 *=*+9 ;POP AC1
  620. POPA2 *=*+9 ;POP AC2
  621. PUSHA1 *=*+9 ;PUSH AC1
  622. PUSHRL *=*+9 ;PUSH REAL NUMBER
  623. PSHINT *=*+9 ;FLOAT & PUSH INTEGER (-32768 .. 32767)
  624. INTFPA *=*+9 ;FLOAT & PUSH INTEGER (0 .. 65535)
  625. ;
  626. EXCGST *=*+9 ;ALLOCATE LOCAL STORAGE
  627. EXCREM *=*+9 ;RECLAIM LOCAL STORAGE
  628. RESTOP *=*+9 ;ALLOCATE GLOBAL STORAGE
  629. RUNERR *=*+6 ;GO TO COMAL ERROR HANDLER
  630. ;
  631. CRDT *=*+3 ;READ CHARACTER
  632. SPACE *=*+2 ;WRITE SPACE
  633. CWRT *=*+3 ;WRITE CHARACTER
  634. CCHKIN *=*+3 ;SELECT INPUT FILE
  635. CCKOUT *=*+3 ;SELECT OUTPUT FILE
  636. CCLRCH *=*+3 ;CLEAR CHANNEL
  637. CFNAME *=*+7 ;PARSE & COPY FILE NAME
  638. COPEN *=*+3 ;OPEN FILE
  639. CCLOSE *=*+3 ;CLOSE FILE
  640. CRLF *=*+3 ;OUTPUT CR AND LF
  641. GETLIN *=*+7 ;INPUT KEYBOARD LINE
  642. ;
  643. RESET *=*+6 ;RESET PROGRAM POINTERS
  644. DUMMY *=*+1 ;EMPTY SUBROUTINE (RTS)
  645. COMAL *=*+6 ;GO TO COMAL EDITOR
  646. EXCUTE *=*+7 ;EXECUTE CODE IN CDBUF
  647. JLOAD *=*+7 ;LOAD COMAL PROGRAM
  648. ARRLEN *=*+7 ;COMPUTE NO. OF ELEMENTS IN ARRAY
  649. ;
  650.  *=$D000
  651. ;
  652. ;  6566 VIDEO INTERFACE CONTROLLER
  653. ;
  654. VIC =*
  655. SPRPOS *=*+16 ;SPRITES 0-7  X & Y POS
  656. SPRXPS *=*+1 ;SPRITES 0-7  X-POS (MSB OF X-COORD.)
  657. VCTRL1 *=*+1 ;VIC CONTROL REGISTER
  658. RWRAST *=*+1 ;READ/WRITE RASTER VALUE FOR COMPARE IRQ
  659. PENX *=*+1 ;LIGHT-PEN LATCH X-POS
  660. PENY *=*+1 ;LIGHT-PEN LATCH Y-POS
  661. SPRDSP *=*+1 ;SPRITE DISPLAY ENABLE
  662. VCTRL2 *=*+1 ;VIC CONTROL REGISTER
  663. SPRYEX *=*+1 ;SPRITES 0-7 EXPAND 2*VERTICAL (Y)
  664. VCTRL3 *=*+1 ;VIC MEMORY CONTROL REGISTER
  665. IRQOCC *=*+1 ;VIC INTERRUPT FLAG REGISTER
  666. IRQMSK *=*+1 ;IRQ MASK REGISTER
  667. SPRBDP *=*+1 ;SPRITE TO BACKGROUND DISPLAY PRIORITY
  668. SPRMCM *=*+1 ;SPRITES 0-7 MULTI-COLOR MODE SELECT
  669. SPRXEX *=*+1 ;SPRITES 0-7 EXPAND 2*HORIZONTAL (X)
  670. SPRSPR *=*+1 ;SPRITE TO SPRITE COLLISION DETECT
  671. SPRBCK *=*+1 ;SPRITE TO BACKGROUND COLLISION DETECT
  672. BORCOL *=*+1 ;BORDER COLOR
  673. BCKCOL *=*+4 ;BACKGROUND COLOR 0-3
  674. SPRMCL *=*+2 ;SPRITE MULTI-COLOR REGISTER 0-1
  675. SPRCOL *=*+8 ;SPRITE 0-7 COLOR
  676. ;
  677.  *=$D400
  678. ;
  679. ;  6581 SOUND INTERFACE DEVICE
  680. ;
  681. SID =* ;VOICE 1:
  682. V1FREQ *=*+2 ;  FREQUENCY CONTROL
  683. V1PWW *=*+2 ;  PULSE WAVEFORM WIDTH
  684. V1CTRL *=*+1 ;  CONTROL REGISTER
  685. V1ENVL *=*+2 ;  ENVELOPE GENERATOR (ADSR)
  686.  ;VOICE 2:
  687. V2FREQ *=*+2 ;  FREQUENCY CONTROL
  688. V2PWW *=*+2 ;  PULSE WAVEFORM WIDTH
  689. V2CTRL *=*+1 ;  CONTROL REGISTER
  690. V2ENVL *=*+2 ;  ENVELOPE GENERATOR (ADSR)
  691.  ;VOICE 3:
  692. V3FREQ *=*+2 ;  FREQUENCY CONTROL
  693. V3PWW *=*+2 ;  PULSE WAVEFORM WIDTH
  694. V3CTRL *=*+1 ;  CONTROL REGISTER
  695. V3ENVL *=*+2 ;  ENVELOPE GENERATOR (ADSR)
  696.  ;FILTERS:
  697. FCUTOF *=*+2 ;  FILTER CUTOFF FREQUENCY
  698. FRESON *=*+1 ;  FILTER RESONANCE/VOICE INPUT CONTROL
  699. FMOVOL *=*+1 ;  SELECT FILTER MODE AND VOLUME
  700. PADDL1 *=*+1 ;A/D-CONVERTER: GAME PADDLE 1
  701. PADDL2 *=*+1 ;A/D-CONVERTER: GAME PADDLE 2
  702. OSC *=*+1 ;OSCILLATOR 3 RANDOM NUMBER GENERATOR
  703. ENV *=*+1 ;ENVELOPE GENERATOR 3 OUTPUT
  704.  *=$D500
  705. SIDIMG *=*+768 ;SID IMAGES
  706. COLRAM *=*+SCSIZE+24 ;COLOR RAM (NYBBLES)
  707. ;
  708.  *=$DC00
  709. ;
  710. ;  6526 COMPLEX INTERFACE ADAPTER #1
  711. ;
  712. COLM =* ;KEYBOARD MATRIX
  713. D1PRA *=*+1
  714. ROWS =* ;KEYBOARD MATRIX
  715. D1PRB *=*+1
  716. D1DDRA *=*+1
  717. D1DDRB *=*+1
  718. D1T1L *=*+1
  719. D1T1H *=*+1
  720. D1T2L *=*+1
  721. D1T2H *=*+1
  722. D1TOD1 *=*+1
  723. D1TODS *=*+1
  724. D1TODM *=*+1
  725. D1TODH *=*+1
  726. D1SDR *=*+1
  727. D1ICR *=*+1
  728. D1CRA *=*+1
  729. D1CRB *=*+1
  730. ;
  731.  *=$DD00
  732. ;
  733. ;  6526 COMPLEX INTERFACE ADAPTER #2
  734. ;
  735. D2PRA *=*+1
  736. D2PRB *=*+1
  737. D2DDRA *=*+1
  738. D2DDRB *=*+1
  739. D2T1L *=*+1
  740. D2T1H *=*+1
  741. D2T2L *=*+1
  742. D2T2H *=*+1
  743. D2TOD1 *=*+1
  744. D2TODS *=*+1
  745. D2TODM *=*+1
  746. D2TODH *=*+1
  747. D2SDR *=*+1
  748. S2ICR *=*+1
  749. D2CRA *=*+1
  750. D2CRB *=*+1
  751. ;
  752.  *=$DE00
  753. ;
  754. OVRLAY *=*+256 ;OVERLAY CONTROL PORT
  755. ;
  756. ;  KERNAL JUMP TABLE
  757. ;
  758.  *=$FF81
  759. ;
  760. CINT *=*+3 ;INIT SCREEN EDITOR
  761. IOINIT *=*+3 ;INIT I/O
  762. RAMTAS *=*+3 ;INIT RAM
  763. RESTOR *=*+3 ;RESTORE DEFAULT I/O VECTORS
  764. VECTOR *=*+3 ;READ/SET VECTORED I/O
  765. SETMSG *=*+3 ;CONTROL KERNAL MESSAGES
  766. SECOND *=*+3 ;SEND SA AFTER LISTEN
  767. TKSA *=*+3 ;SEND SA AFTER TALK
  768. MEMTOP *=*+3 ;READ/SET TOP OF MEMORY
  769. MEMBOT *=*+3 ;READ/SET BOTTOM OF MEMORY
  770. SCNKEY *=*+3 ;SCAN KEYBOARD
  771. SETTMO *=*+3 ;SET TIMEOUT DEFEAT
  772. ACPTR *=*+3 ;INPUT BYTE FROM SERIAL PORT
  773. CIOUT *=*+3 ;OUTPUT BYTE TO  SERIAL PORT
  774. UNTLK *=*+3 ;COMMAND DEVICE TO UNTALK
  775. UNLSN *=*+3 ;COMMAND DEVICE TO UNLISTEN
  776. LISTN *=*+3 ;COMMAND DEVICE TO LISTEN
  777. TALK *=*+3 ;COMMANDS DEVICE TO TALK
  778. RDSTAT *=*+3 ;READ I/O STATUS WORD
  779. SETLFS *=*+3 ;SET LOGICAL, FIRST, AND SECOND ADDR.
  780. SETNAM *=*+3 ;SET FILE NAME
  781. OPEN *=*+3 ;OPEN LOGICAL FILE
  782. CLOSE *=*+3 ;CLOSE LOGICAL FILE
  783. CHKIN *=*+3 ;OPEN CHANNEL FOR INPUT
  784. CHKOUT *=*+3 ;OPEN CHANNEL FOR OUTPUT
  785. CKOUT =CHKOUT
  786. CLRCHN *=*+3 ;CLOSE I/O CHANNELS
  787. CLRCH =CLRCHN
  788. CHRIN *=*+3 ;INPUT CHAR FROM CHANNEL
  789. RDT =CHRIN
  790. CHROUT *=*+3 ;OUTPUT CHAR TO CHANNEL
  791. WRT =CHROUT
  792. LOADF *=*+3 ;LOAD RAM FROM A DEVICE
  793. SAVEF *=*+3 ;SAVE RAM TO DEVICE
  794. SETTIM *=*+3 ;SET REAL TIME CLOCK
  795. RDTIM *=*+3 ;READ REAL TIME CLOCK
  796. STOP *=*+3 ;SCAN STOP KEY
  797. GET *=*+3 ;GET CHAR FROM KEYBOARD BUFFER
  798. CLALL *=*+3 ;CLOSE ALL CHANNELS AND FILES
  799. UDTIM *=*+3 ;INC. REAL TIME CLOCK
  800. SCREN *=*+3 ;RETURN ROW,COLUMN OF CURSOR
  801. PLOT *=*+3 ;READ/SET ROW,COLUMN FOR CURSOR
  802. IOBASE *=*+3 ;RETURNS BASE ADDRESS OF I/O DEVICES
  803. ;
  804. SKIP =$2C ;OPCODE FOR 'BIT <ABS>' (SKIP 2 BYTES)
  805. ;
  806. ;
  807.  *=$FFFA
  808. ;
  809. CNMI *=*+2 ;NON-MASKABLE INTERRUPT VECTOR
  810. CRESET *=*+2 ;SYSTEM RESET VECTOR
  811. CIRQ *=*+2 ;INTERRUPT REQUEST VECTOR
  812. ;
  813. ;
  814. ;********************************************************
  815. ;
  816. ;
  817. ; FOR USE IN ASSEMBLER CODED SUBROUTINES IN COMAL:
  818. ;
  819. ; LABELS FOR PROC/FUNC DEFINITIONS
  820. ;
  821. CART =%10000000 ;10XRXPPP (IN CARTRIDGE AT $8000-$BFFF)
  822. C64 =%01000111 ;01XRXPPP (IN C64       AT $0900-$FFFF)
  823. ROMMED =%00010000
  824. ;
  825. DEFPAG =C64-LORAM
  826. ;
  827. PROC =112
  828. ENDPRC =126
  829. ;
  830. FUNC =227
  831. ENDFNC =126
  832. ;
  833. PARAM =114
  834. VALUE =PARAM+0
  835. REF =PARAM+3
  836. ARRAY =6
  837. ;
  838. REAL =0
  839. INT =1
  840. STR =2
  841. ;
  842. ;
  843. ;  SIGNAL TYPES:
  844. ;
  845. POWER1 =0 ;POWER UP SEI (ONLY FOR ROMMED LIBRARIES)
  846. POWER2 =1 ;POWER UP CLI (ONLY FOR ROMMED LIBRARIES)
  847. LINK =2 ;AFTER LINK/LOAD-COMMAND (ONLY LIBRARY JUST LINKED)
  848. DSCRD =3 ;BEFORE DISCARD-COMMAND
  849. NEW =4 ;AFTER NEW-COMMAND OR BAD LOAD/RUN/CHAIN
  850. CLRTAB =5 ;AFTER NAME TABLE IS CLEARED
  851. RUN =6 ;BEFORE RUN/CHAIN
  852. WARM1 =7 ;WARM START SEI
  853. CON =8 ;BEFORE CONTINUATION (CON COMMAND)
  854. ERROR =9 ;AFTER ERROR MESSAGE PRINTED
  855. STOP1 =10 ;AFTER STOP/END
  856. BASIC =11 ;BEFORE LEAVING COMAL
  857. ;
  858. ;
  859.  .END
  860.